/**
 * 
 */
package br.com.ac.fatureweb.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import br.com.ac.fatureweb.integration.enums.EnumStatus;
import br.com.ac.fatureweb.integration.enums.EnumTypeCadastrador;
import br.com.ac.fatureweb.model.carga.LeituristaSaae;
import br.com.ac.fatureweb.utilitary.Model;

/**
 * @author aldivone
 *
 */
@Entity
@Table(name = "LEITURISTA")
@SequenceGenerator(name = "SEQ_LEITURISTA", sequenceName = "SEQ_LEITURISTA", allocationSize = 1, initialValue = 1)
public class Leiturista extends Model {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2391619778938313843L;

	@Id
	@GeneratedValue(generator = "SEQ_LEITURISTA", strategy = GenerationType.SEQUENCE)
	@Column(name = "ID")
	private Long id;

	@Column(name = "CODIGO", unique = true)
	private Long codigo;

	@Column(name = "NOME")
	private String nome;

	@Column(name = "ENDERECO")
	private String endereco;

	@Column(name = "NUMERO")
	private Long numero;

	@Column(name = "COMPLEMENTO")
	private String complemento;

	@Column(name = "TELEFONE")
	private String telefone;

	@Column(name = "TIPO_CADASTRADOR")
	@Enumerated(EnumType.ORDINAL)
	private EnumTypeCadastrador enumTipoCadastrador;

	@Column(name = "SENHA")
	private String senha;

	@Column(name = "DATA_GERACAO_SENHA")
	private Date dataGeracaoSenha;

	@Column(name = "FLG_ATUALIZA_SENHA")
	private Boolean flgAtualizaSenha;

	@Column(name = "CPF")
	private String cpf;

	@Column(name = "STATUS")
	@Enumerated(EnumType.ORDINAL)
	private EnumStatus status;

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "COD_SAAE", referencedColumnName = "ID")
	private LeituristaSaae leituristaSaae;

	public Leiturista() {
		super();
	}

	public Leiturista(Long id) {
		super();
		this.id = id;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Leiturista(Long id, Long codigo, String nome, String endereco,
			Long numero, String complemento, String telefone,
			EnumTypeCadastrador enumTipoCadastrador, String senha,
			Date dataGeracaoSenha, Boolean flgAtualizaSenha, String cpf,
			EnumStatus status, LeituristaSaae leituristaSaae) {
		super();
		this.id = id;
		this.codigo = codigo;
		this.nome = nome;
		this.endereco = endereco;
		this.numero = numero;
		this.complemento = complemento;
		this.telefone = telefone;
		this.enumTipoCadastrador = enumTipoCadastrador;
		this.senha = senha;
		this.dataGeracaoSenha = dataGeracaoSenha;
		this.flgAtualizaSenha = flgAtualizaSenha;
		this.cpf = cpf;
		this.status = status;
		this.leituristaSaae = leituristaSaae;
	}

	/**
	 * @return the codigo
	 */
	public Long getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo
	 *            the codigo to set
	 */
	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * @param nome
	 *            the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * @return the endereco
	 */
	public String getEndereco() {
		return endereco;
	}

	/**
	 * @param endereco
	 *            the endereco to set
	 */
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	/**
	 * @return the numero
	 */
	public Long getNumero() {
		return numero;
	}

	/**
	 * @param numero
	 *            the numero to set
	 */
	public void setNumero(Long numero) {
		this.numero = numero;
	}

	/**
	 * @return the complemento
	 */
	public String getComplemento() {
		return complemento;
	}

	/**
	 * @param complemento
	 *            the complemento to set
	 */
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	/**
	 * @return the telefone
	 */
	public String getTelefone() {
		return telefone;
	}

	/**
	 * @param telefone
	 *            the telefone to set
	 */
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	/**
	 * @return the enumTipoCadastrador
	 */
	public EnumTypeCadastrador getEnumTipoCadastrador() {
		return enumTipoCadastrador;
	}

	/**
	 * @param enumTipoCadastrador
	 *            the enumTipoCadastrador to set
	 */
	public void setEnumTipoCadastrador(EnumTypeCadastrador enumTipoCadastrador) {
		this.enumTipoCadastrador = enumTipoCadastrador;
	}

	/**
	 * @return the senha
	 */
	public String getSenha() {
		return senha;
	}

	/**
	 * @param senha
	 *            the senha to set
	 */
	public void setSenha(String senha) {
		this.senha = senha;
	}

	/**
	 * @return the dataGeracaoSenha
	 */
	public Date getDataGeracaoSenha() {
		return dataGeracaoSenha;
	}

	/**
	 * @param dataGeracaoSenha
	 *            the dataGeracaoSenha to set
	 */
	public void setDataGeracaoSenha(Date dataGeracaoSenha) {
		this.dataGeracaoSenha = dataGeracaoSenha;
	}

	/**
	 * @return the flgAtualizaSenha
	 */
	public Boolean getFlgAtualizaSenha() {
		return flgAtualizaSenha;
	}

	/**
	 * @param flgAtualizaSenha
	 *            the flgAtualizaSenha to set
	 */
	public void setFlgAtualizaSenha(Boolean flgAtualizaSenha) {
		this.flgAtualizaSenha = flgAtualizaSenha;
	}

	/**
	 * @return the cpf
	 */
	public String getCpf() {
		return cpf;
	}

	/**
	 * @param cpf
	 *            the cpf to set
	 */
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	/**
	 * @return the status
	 */
	public EnumStatus getStatus() {
		return status;
	}

	/**
	 * @param status
	 *            the status to set
	 */
	public void setStatus(EnumStatus status) {
		this.status = status;
	}

	/**
	 * @return the leituristaSaae
	 */
	public LeituristaSaae getLeituristaSaae() {
		return leituristaSaae;
	}

	/**
	 * @param leituristaSaae
	 *            the leituristaSaae to set
	 */
	public void setLeituristaSaae(LeituristaSaae leituristaSaae) {
		this.leituristaSaae = leituristaSaae;
	}

}
